package com.shujia.wyh.day08;

/*
        成员变量：定义在类中方法外
        局部变量：在方法定义上或者方法内部定义

        成员变量和局部变量的区别：
            1、在类中的定义位置不同
                成员变量：类中，但是在方法外
                局部变量：定义在方法内部
            2、在内存中的位置也不同
                成员变量：在堆内存中
                局部变量：在栈内存中
            3、生命周期不同
                成员变量：随着对象的创建而创建，随着对象的消失而消失
                局部变量：随着方法的调用而创建，随着方法的调用完毕而消失
            4、初始化值不同
                成员变量：有系统给的默认值
                局部变量：没有系统给它默认值，必须在定义的时候赋值，或者在方法内部使用之前进行赋值，然后才能使用，推荐定义的时候就赋值。


      注意事项：
        1、成员变量与局部变量的名称可以是一样的吗？
            可以是一样的，但是使用的时候，遵循就近原则。
            会先在局部范围内查找变量，如果局部范围内都没有，就去类中方法外（成员位置）与找，如果成员位置上面都没有，报错找不到
        2、方法与方法之间里面的局部变量不可互相调用！！



 */
public class BianLiangDemo1 {
    //成员变量，字符串类型的变量name
    String name;
    int age;

    public void show(int n){
        int a = 20;
//        int age = 30;
//        a=10;
//        System.out.println(a); //局部变量定义后没有做初始化是不能够被使用的
        System.out.println(age); //变量使用的时候，有一个原则，就近原则
    }

    public void show2(){
        int b = 200;
//        System.out.println(a);
    }
}

class Demo{
    public static void main(String[] args) {
        BianLiangDemo1 bld = new BianLiangDemo1();
        //访问成员变量
        //成员变量获取后直接使用，因为创建对象后，JVM会自动的给予默认值
        System.out.println(bld.name);

        //对象调用成员方法
        bld.show(100);

    }
}
